package main

import "fmt"

/**
 * @Author: DengLibin
 * @Date: Create in 2023-01-11 16:19:08
 * @Description:
 给你一个二叉树的根节点 root ，按 任意顺序 ，返回所有从根节点到叶子节点的路径。

叶子节点 是指没有子节点的节点。

输入： 1
	 /  \
	2    3
	 \
	  5
输出：["1->2->5","1->3"]
*/

func binaryTreePaths(root *TreeNode) []string {
	if root == nil {
		return nil
	}
	arr := make([]string, 0)
	doBinaryTreePaths(root, fmt.Sprintf("%d", root.Val), &arr)

	return arr

}

func doBinaryTreePaths(node *TreeNode, path string, list *[]string) {
	if node.Left == nil && node.Right == nil {
		*list = append(*list, path)
		return
	}
	if node.Left != nil {
		path_left := fmt.Sprintf("%s->%d", path, node.Left.Val)
		doBinaryTreePaths(node.Left, path_left, list)
	}
	if node.Right != nil {
		path_right := fmt.Sprintf("%s->%d", path, node.Right.Val)
		doBinaryTreePaths(node.Right, path_right, list)
	}

}
